perm filename BREAK.ANS[UCI,SYS] blob
sn#049831 filedate 1973-07-03 generic text, type T, neo UTF8
∂19-JUN-73 1400 network site BBN
-------
Date: 19-JUN-73 1701-EDT
From: LEWIS at BBN-TENEX
Re: GO
- - - -
BRUCE,
THE PROBLEM WITH GO (AND RETURN FOR THAT MATTER) IS THAT
IT UNWINDS THE STACK BACK TO THE LAST PROG. HOWEVER, IT DOES NOT
UNWIND ERRSETS. SINCE THE GO OR OK EVALUATES ITS EXPRESSION INSIDE
OF AN ERRSET, THE NEXT TIME YOU DO A ↑ (WHICH IN TURN DOES (ERR NIL))
CONTROL IS TRANSFERED TO A POINT ON THE STACK WHICH IS NO LONGER
VALID. THIS CAN BE FIXED, AND PROBABLY WILL BE IN THE NEXT RELEASE.
THE PROBLEM WITH THE LEVEL NUMBER IS NOT SO SIMPLE. GO AND OK
ARE EXPECTING THE EXPRESSION TO RETURN A VALUE. AFTER THE VALUE
IS RETURNED, THE LEVEL # IS DECREMENTED. SINCE GO AND RETURN
SKIP OVER ALL OF THAT AND IMMEDIATELY RETURN TO THE LEVEL OF
THE PROG, THE LEVEL # REMAINS UNCHANGED, AS DO THE IO CHANNELS AND
THE PROMPT CHARACTER. YOU WILL GET A SIMILAR PROBLEM IF THE BROKEN
EXPRESSION CONTAINS A RETFROM, EXCEPT THAT RETFROM HANDELS ERRSETS.
I WILL GIVE A LOT OF THOUGHT TO THIS AND SEE WHAT I CAN COME UP WITH.
IN THE MEANTIME DON'T USE GO OR OK ON GO OR RETURN. IF THE BREAK
OCCURS BECAUSE OF AN ERROR, YOU CAN USE EX TO CONTINUE, BUT OTHERWISE,
I AM AT LOSS AS TO WHAT TO SAY. SORRY.
DARYLE
-------